<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>Linux面经 | 无人深空</title><meta name="keywords" content="Linux"><meta name="author" content="zcm"><meta name="copyright" content="zcm"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="Linux 面经1.Linux 介绍 什么是 Linux  Linux 是一套免费使用和自由传播的类似 Unix 操作系统，一般的 WEB 项目都是部署都是放在 Linux 操作系统上面 Linux 是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统 能运行主要的 Unix 工具软件、应用程序和网络协议 支持 32 位和 64 位硬件 Linux 继承了 U">
<meta property="og:type" content="article">
<meta property="og:title" content="Linux面经">
<meta property="og:url" content="https://gitee.com/zcmmmm/zcmmmm/2022/10/22/Linux%E9%9D%A2%E7%BB%8F/index.html">
<meta property="og:site_name" content="无人深空">
<meta property="og:description" content="Linux 面经1.Linux 介绍 什么是 Linux  Linux 是一套免费使用和自由传播的类似 Unix 操作系统，一般的 WEB 项目都是部署都是放在 Linux 操作系统上面 Linux 是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统 能运行主要的 Unix 工具软件、应用程序和网络协议 支持 32 位和 64 位硬件 Linux 继承了 U">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://study-record-images.oss-cn-beijing.aliyuncs.com/Linux/Linux.png">
<meta property="article:published_time" content="2022-10-22T10:26:17.000Z">
<meta property="article:modified_time" content="2023-05-02T02:08:21.440Z">
<meta property="article:author" content="zcm">
<meta property="article:tag" content="Linux">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://study-record-images.oss-cn-beijing.aliyuncs.com/Linux/Linux.png"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="https://gitee.com/zcmmmm/zcmmmm/2022/10/22/Linux%E9%9D%A2%E7%BB%8F/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: {"path":"/search.xml","preload":false,"languages":{"hits_empty":"找不到您查询的内容：${query}"}},
  translate: undefined,
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":200},
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '天',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  lightbox: 'fancybox',
  Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#49b1f5","bgDark":"#1f1f1f","position":"bottom-left"},
  source: {
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
    }
  },
  isPhotoFigcaption: false,
  islazyload: false,
  isAnchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
  title: 'Linux面经',
  isPost: true,
  isHome: false,
  isHighlightShrink: false,
  isToc: true,
  postUpdate: '2023-05-02 10:08:21'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    
    const detectApple = () => {
      if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
        document.documentElement.classList.add('apple')
      }
    }
    detectApple()
    })(window)</script><link rel="stylesheet" href="/css/categories.css?v1"><link rel="stylesheet" href="/css/navigation.css?v1"><link rel="stylesheet" href="/css/custom.css?v1"><meta name="generator" content="Hexo 6.3.0"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="https://s2.loli.net/2022/09/22/36LN4kcjYOd9HT8.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">43</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">25</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">11</div></a></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间轴</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div></div></div></div><div class="post" id="body-wrap"><header class="not-top-img" id="page-header"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">无人深空</a></span><div id="menus"></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间轴</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div></div><div id="nav-right"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i></a></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav></header><main class="layout" id="content-inner"><div id="post"><div id="post-info"><h1 class="post-title">Linux面经</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" datetime="2022-10-22T10:26:17.000Z" title="发表于 2022-10-22 18:26:17">2022-10-22</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2023-05-02T02:08:21.440Z" title="更新于 2023-05-02 10:08:21">2023-05-02</time></span><span class="post-meta-categories"><span class="post-meta-separator">|</span><i class="fas fa-inbox fa-fw post-meta-icon"></i><a class="post-meta-categories" href="/categories/%E9%9D%A2%E7%BB%8F/">面经</a><i class="fas fa-angle-right post-meta-separator"></i><i class="fas fa-inbox fa-fw post-meta-icon"></i><a class="post-meta-categories" href="/categories/Others/">Others</a></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-wordcount"><i class="far fa-file-word fa-fw post-meta-icon"></i><span class="post-meta-label">字数总计:</span><span class="word-count">6.3k</span><span class="post-meta-separator">|</span><i class="far fa-clock fa-fw post-meta-icon"></i><span class="post-meta-label">阅读时长:</span><span>19分钟</span></span><span class="post-meta-separator">|</span><span class="post-meta-pv-cv" id="" data-flag-title="Linux面经"><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">阅读量:</span><span id="busuanzi_value_page_pv"><i class="fa-solid fa-spinner fa-spin"></i></span></span></div></div></div><article class="post-content" id="article-container"><h2 id="Linux-面经"><a href="#Linux-面经" class="headerlink" title="Linux 面经"></a>Linux 面经</h2><h3 id="1-Linux-介绍"><a href="#1-Linux-介绍" class="headerlink" title="1.Linux 介绍"></a>1.Linux 介绍</h3><ol>
<li><p>什么是 Linux</p>
<blockquote>
<p>Linux 是一套免费使用和自由传播的类似 Unix 操作系统，一般的 WEB 项目都是部署都是放在 Linux 操作系统上面</p>
<p>Linux 是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统</p>
<p>能运行主要的 Unix 工具软件、应用程序和网络协议</p>
<p>支持 32 位和 64 位硬件</p>
<p>Linux 继承了 Unix 以网络为核心的设计思想，是一个性能稳定的多用户网络操作系统</p>
</blockquote>
</li>
<li><p>Windows 和 Linux 的区别</p>
<ul>
<li>Windows 是微软开发的操作系统，民用操作系统，可用于娱乐、影音、上网</li>
<li>Windows 操作系统具有强大的日志记录系统和强大的桌面应用，使用非常方便</li>
<li>Linux 的应用相对单纯很多，但是 Linux 的性能是非常出色的，可以完全针对机器的配置有针对性的优化</li>
<li><strong>简单来说 Windows 适合普通用户进行娱乐办公使用，Linux 适合软件开发部署</strong></li>
</ul>
</li>
<li><p>Unix 和 Linux 的区别</p>
<blockquote>
<p>Linux 和 Unix 都是功能强大的操作系统，有很多相似之处</p>
<p>以下是两者区别</p>
</blockquote>
<ul>
<li><p>开源行</p>
<blockquote>
<p>Linux 是一款开源操作系统，无需付费</p>
<p>Unix 是一款对源码实行知识产权保护的传统商业软件，使用需付费</p>
</blockquote>
</li>
<li><p>跨平台性</p>
<blockquote>
<p>Linux 操作系统具有良好的跨平台性能，可运行在多硬件平台</p>
<p>Unix 操作系统跨平台性较弱，大多需与硬件配套使用</p>
</blockquote>
</li>
<li><p>可视化界面</p>
<blockquote>
<p>Linux 除了进行命令行操作，还有窗体管理系统</p>
<p>Unix 只是命令行下的系统</p>
</blockquote>
</li>
<li><p>硬件环境</p>
<blockquote>
<p>Linux 对硬件要求较低，安装方法更容易掌握</p>
<p>Unix 对硬件要求比较苛刻，安装难度较大</p>
</blockquote>
</li>
<li><p>用户群体</p>
<blockquote>
<p>Linux 用户群体广泛，个人和企业均可使用</p>
<p>Unix 用户群体较窄，多是安全性要求较高的大型企业，如银行、电信部门，或 Unix 硬件厂商（如 Sun 等）</p>
</blockquote>
</li>
</ul>
</li>
</ol>
<h3 id="2-Linux-内核与体系结构"><a href="#2-Linux-内核与体系结构" class="headerlink" title="2.Linux 内核与体系结构"></a>2.Linux 内核与体系结构</h3><ol>
<li><p>Linux 内核</p>
<blockquote>
<p>Linux 系统的核心是内核</p>
<p>内核控制着计算机系统上的所有硬件和软件，在必要时分配硬件，并根据需要执行软件</p>
</blockquote>
<ul>
<li>系统内存管理 </li>
<li>应用程序管理 </li>
<li>硬件设备管理 </li>
<li>文件系统管理</li>
</ul>
</li>
<li><p>Linux 基本组件</p>
<blockquote>
<p>就像任何其他典型的操作系统一样，Linux拥有所有这些组件：</p>
<p><code>内核、shell、GUI，系统实用程序、应用程序</code></p>
<p>Linux 比其他操作系统更具优势的是每个方面都附带其他功能，所有代码都可以免费下载</p>
</blockquote>
</li>
<li><p>Linux 体系结构</p>
<blockquote>
<p>Linux 体系结构可以分为两大块：</p>
</blockquote>
<ul>
<li><p>用户空间（User Space）</p>
<blockquote>
<p>用户空间包括用户的应用程序、C 库</p>
</blockquote>
</li>
<li><p>内核空间（Kernel Space）</p>
<blockquote>
<p>内核空间包括系统调用接口、内核、平台架构相关代码</p>
</blockquote>
</li>
</ul>
<p><img src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Linux/Linux%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84.png" alt="Linux体系结构"></p>
<blockquote>
<p>为什么 Linux 体系结构要分为这两个板块</p>
</blockquote>
<ul>
<li>现代 CPU 实现了不同的工作模式，不同模式下 CPU 可以执行的指令和访问的寄存器不同</li>
<li>Linux 从 CPU 的角度出发，为了保护内核的安全，把系统分为两部分</li>
<li>用户空间和内核空间是程序执行的两种不同状态，可以通过两种方式完成用户空间到内核空间的转移<ul>
<li>系统调用</li>
<li>硬件中断</li>
</ul>
</li>
</ul>
</li>
</ol>
<h3 id="3-Bash-和-DOS-的区别"><a href="#3-Bash-和-DOS-的区别" class="headerlink" title="3.Bash 和 DOS 的区别"></a>3.Bash 和 DOS 的区别</h3><ol>
<li><p>什么是 Bash</p>
<blockquote>
<p>BASH（Bourne Again SHell）</p>
<p>由 Steve Bourne 编写，作为原始 Bourne Shell（由 &#x2F; bin &#x2F;sh 表示）的替代品</p>
<p>它结合了原始版本的 Bourne Shell 的所有功能，以及其他功能，使其更容易使用</p>
<p><strong>它已被改编为运行 Linux 的大多数系统的默认 shell</strong></p>
</blockquote>
</li>
<li><p>什么是 DOS</p>
<blockquote>
<p>DOS 磁盘操作系统（Disk Operating System），是早期个人计算机上的一类操作系统</p>
<p>可以直接操纵管理硬盘的文件，以 DOS 的形式运行</p>
</blockquote>
</li>
<li><p>两者区别</p>
<ul>
<li>BASH 命令区分大小写；DOS 不区分大小写</li>
<li>BASH 中 <code>/</code> 是目录分隔符，<code>\</code> 是转义字符；DOS 中 <code>/</code> 是命令参数分隔符，<code>\</code> 是目录分隔符</li>
<li>DOS 遵循命名文件中的约定，即 8 个字符的文件名后跟<code>.</code>，扩展名为 3 个字符；BASH 无命名约定</li>
</ul>
</li>
</ol>
<h3 id="4-Linux-开机启动过程"><a href="#4-Linux-开机启动过程" class="headerlink" title="4.Linux 开机启动过程"></a>4.Linux 开机启动过程</h3><ol>
<li>主机加电自检，加载 BIOS 硬件信息</li>
<li>读取 MBR 的引导文件（GRUB、LILO）</li>
<li>引导 Linux 内核</li>
<li>运行第一个进程 init（进程号永远为 1）</li>
<li>进入相应的运行级别</li>
<li>运行终端，输入用户名和密码</li>
</ol>
<h3 id="5-Linux-系统缺省的运行级别"><a href="#5-Linux-系统缺省的运行级别" class="headerlink" title="5.Linux 系统缺省的运行级别"></a>5.Linux 系统缺省的运行级别</h3><ul>
<li>关机</li>
<li>单机用户模式</li>
<li>字符界面的多用户模式（不支持网络）</li>
<li>字符界面的多用户模式</li>
<li>未分配使用</li>
<li>图形界面的多用户模式</li>
<li>重启</li>
</ul>
<h3 id="6-Linux-使用的进程间通信方式"><a href="#6-Linux-使用的进程间通信方式" class="headerlink" title="6.Linux 使用的进程间通信方式"></a>6.Linux 使用的进程间通信方式</h3><ul>
<li>管道(pipe)、流管道(s_pipe)、有名管道(FIFO)</li>
<li>信号(signal) </li>
<li>消息队列</li>
<li>共享内存</li>
<li>信号量</li>
<li>套接字(socket)</li>
</ul>
<h3 id="7-Linux-文件系统"><a href="#7-Linux-文件系统" class="headerlink" title="7.Linux 文件系统"></a>7.Linux 文件系统</h3><ol>
<li><p>文件系统简介</p>
<blockquote>
<p>在 Linux 操作系统中，所有被操作系统管理的资源，如<code>网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件、目录</code>都被看作是一个文件</p>
<p>在 Linux 系统中<strong>一切皆文件</strong>，这是继承自 Unix 哲学的一个体现</p>
<p>Linux 支持一下 5 种文件类型</p>
</blockquote>
<p><img src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Linux/%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B.png" alt="文件类型"></p>
</li>
<li><p>Linux 的目录结构</p>
<blockquote>
<p>Linux 文件系统的结构层次鲜明，就像一棵倒立的树，最顶层是其根目录</p>
</blockquote>
<p><img src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Linux/%E6%96%87%E4%BB%B6%E7%BB%93%E6%9E%84.png" alt="文件结构"></p>
<table>
<thead>
<tr>
<th align="center">目录</th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td align="center">&#x2F;bin</td>
<td>存放二进制可执行文件（ls、cat、mkdir 等），常用命令一般都在这里</td>
</tr>
<tr>
<td align="center">&#x2F;etc</td>
<td>存放系统管理和配置文件</td>
</tr>
<tr>
<td align="center">&#x2F;home</td>
<td>存放所有用户文件的根目录，是用户主目录的基点，比如用户 user 的主目录就是 &#x2F;home&#x2F;user，可以用 ~user 表示</td>
</tr>
<tr>
<td align="center">&#x2F;usr</td>
<td>用于存放系统应用程序</td>
</tr>
<tr>
<td align="center">&#x2F;opt</td>
<td>额外安装的可选应用程序包所放置的位置。一般情况下，我们可以把 tomcat 等都安装到这里</td>
</tr>
<tr>
<td align="center">&#x2F;proc</td>
<td>虚拟文件系统目录，是系统内存的映射。可直接访问这个目录来获取系统信息</td>
</tr>
<tr>
<td align="center">&#x2F;root</td>
<td>超级用户（系统管理员）的主目录（特权阶级）</td>
</tr>
<tr>
<td align="center">&#x2F;sbin</td>
<td>存放二进制可执行文件，只有 root 才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如 ifconfig 等</td>
</tr>
<tr>
<td align="center">&#x2F;dev</td>
<td>用于存放设备文件</td>
</tr>
<tr>
<td align="center">&#x2F;mnt</td>
<td>系统管理员安装临时文件系统的安装点，系统提供这个目录是让用户临时挂载其他的文件系统</td>
</tr>
<tr>
<td align="center">&#x2F;boot</td>
<td>存放用于系统引导时使用的各种文件</td>
</tr>
<tr>
<td align="center">&#x2F;lib</td>
<td>存放跟文件系统中的程序运行所需要的共享库及内核模块。共享库又叫动态链接共享库，作用类似 windows 里的 .dll 文件，存放了根文件系统程序运行所需的共享文件</td>
</tr>
<tr>
<td align="center">&#x2F;tmp</td>
<td>用于存放各种临时文件，是公用的临时文件存储点</td>
</tr>
<tr>
<td align="center">&#x2F;var</td>
<td>用于存放运行时需要改变数据的文件，也是某些大文件的溢出区，比方说各种服务的日志文件（系统启动日志）等</td>
</tr>
<tr>
<td align="center">&#x2F;lost+found</td>
<td>这个目录平时是空的，系统非正常关机而留下<code>无家可归</code>的文件（类似 windows 的 <code>.chk</code> 文件）就在这里</td>
</tr>
</tbody></table>
</li>
</ol>
<h3 id="8-inode-介绍"><a href="#8-inode-介绍" class="headerlink" title="8.inode 介绍"></a>8.inode 介绍</h3><blockquote>
<p>一般来说面试不会问到 inode</p>
<p>但是 inode 是理解 Linux 文件系统的硬盘存储的基础</p>
</blockquote>
<ul>
<li><p>文件存储在硬盘上，硬盘的最小存储单位叫<code>扇区(Sector)</code>。每个扇区存储 512 字节（0.5KB）</p>
</li>
<li><p>操作系统读取硬盘时不会一个一个扇区的读取，而是一次性连续读取多个扇区，即一次性读取一个块</p>
<blockquote>
<p>块由多个扇区组成，是文件存取的最小单位</p>
<p>块的大小常见为 4KB，即连续 8 个扇区组成 1 个块</p>
</blockquote>
</li>
<li><p>文件都存储在块种，文件的元信息如<code>文件的创建者、创建日期、大小</code>等存储在 inode 区域中</p>
<blockquote>
<p>inode 的中文名为<code>索引节点</code></p>
</blockquote>
</li>
<li><p><strong>每个文件都有对应的 inode，存储该文件的元信息</strong></p>
</li>
</ul>
<p><img src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Linux/inode.png" alt="inode"></p>
<h3 id="9-硬链接-VS-软连接"><a href="#9-硬链接-VS-软连接" class="headerlink" title="9.硬链接 VS 软连接"></a>9.硬链接 VS 软连接</h3><ul>
<li><p>硬链接</p>
<blockquote>
<p>由于 Linux 下的文件是通过 inode 来识别文件，硬链接可以认为是一个指向文件 inode 的指针，系统并不为它重新分配 inode</p>
<p>每添加一个硬链接，文件的链接数 + 1</p>
</blockquote>
<blockquote>
<p>缺点：</p>
<p><strong>不可以在不同文件系统的文件间建立链接</strong></p>
<p><strong>只有超级用户才可以为目录创建硬链接</strong></p>
</blockquote>
</li>
<li><p>软链接（即符号链接，常用）</p>
<blockquote>
<p>软链接克服了硬链接的不足，没有任何文件系统的限制，任何用户都可以创建指向目录的符号链接</p>
<p>具有更大的灵活性，甚至可以跨不同机器、不同网络对文件进行链接</p>
</blockquote>
<blockquote>
<p>缺点</p>
<p>链接文件包含原有文件的路径信息，所以文件移动后可能无法访问</p>
<p>要求系统分配额外的空间用于建立新的 inode 节点和保存原文件路径</p>
</blockquote>
</li>
<li><p>两者区别</p>
<ul>
<li>硬链接不可跨分区；软链接可以跨分区</li>
<li>硬链接指向一个 inode 节点；软链接创建一个新的 inode 节点</li>
<li>删除硬链接不会删除原文件；删除软链接会删除原文件</li>
<li><strong>实际场景下，基本都使用软链接</strong></li>
</ul>
</li>
</ul>
<h3 id="10-Linux-系统初始化环境后需要做一些什么安全工作"><a href="#10-Linux-系统初始化环境后需要做一些什么安全工作" class="headerlink" title="10.Linux 系统初始化环境后需要做一些什么安全工作"></a>10.Linux 系统初始化环境后需要做一些什么安全工作</h3><ol>
<li><p>添加普通用户登录，禁止 root 用户登录，更改 SSH 端口号</p>
<blockquote>
<p>SSH 端口号不一定要修改。如暴露在外网建议修改</p>
</blockquote>
</li>
<li><p>服务器使用密钥登陆，禁止密码登录</p>
</li>
<li><p>开启防火墙，关闭 SElinux，根据业务需求设置相应的防火墙规则</p>
</li>
<li><p>装 fail2ban，防止 SSH 暴力破解的软件</p>
</li>
<li><p>设置只允许公司办公网出口 IP 能登录服务器</p>
</li>
<li><p>修改历史命令记录的条数为 10 条</p>
</li>
<li><p>只允许有需要的服务器可以访问外网，其余全部禁止</p>
</li>
<li><p>做好软件层面的防护</p>
<ul>
<li>设置 nginx_Waf 模块防止 SQL 注入</li>
<li>把 web 服务使用 www 用户启动，更改网站目录的所有者和所属组为 www</li>
</ul>
</li>
</ol>
<h3 id="11-CC-攻击-VS-DDOS-攻击"><a href="#11-CC-攻击-VS-DDOS-攻击" class="headerlink" title="11.CC 攻击 VS DDOS 攻击"></a>11.CC 攻击 VS DDOS 攻击</h3><ul>
<li><p>CC 攻击</p>
<blockquote>
<p>主要用来攻击页面</p>
<p>模拟多个用户不停对页面进行访问，从而使系统资源消耗殆尽</p>
</blockquote>
</li>
<li><p>DDOS 攻击</p>
<blockquote>
<p>分布式拒绝服务攻击</p>
<p>指借助服务器技术将多个计算机联合起来作为攻击平台，对目标网站发动 DDOS 攻击</p>
<p>即通过大量合法的请求占用大量网络资源，以达到瘫痪网络的目的</p>
</blockquote>
</li>
<li><p>如何预防</p>
<blockquote>
<p>通过硬件防火墙做流量清理，将攻击流量引入黑洞</p>
</blockquote>
</li>
</ul>
<h3 id="12-网站数据库注入"><a href="#12-网站数据库注入" class="headerlink" title="12.网站数据库注入"></a>12.网站数据库注入</h3><ol>
<li><p>数据库注入定义</p>
<blockquote>
<p>SQL 注入即是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严，攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL语句，在管理员不知情的情况下实现非法操作，以此来实现欺骗数据库服务器执行非授权的任意查询，从而进一步得到相应的数据信息</p>
</blockquote>
</li>
<li><p>如何预防和过滤</p>
<blockquote>
<p>使用 <code>nginx_waf</code> 做过滤与预防</p>
</blockquote>
</li>
</ol>
<h3 id="13-如何处理网站访问慢问题"><a href="#13-如何处理网站访问慢问题" class="headerlink" title="13.如何处理网站访问慢问题"></a>13.如何处理网站访问慢问题</h3><ol>
<li><p>导致访问慢的原因</p>
<ul>
<li>服务器出口带宽不够用</li>
<li>服务器负载过大</li>
<li>数据库瓶颈</li>
<li>网站开发代码没有优化好</li>
</ul>
</li>
<li><p>如何排查</p>
<ul>
<li>首先要确定是用户端问题还是服务端问题</li>
<li>使用浏览器调试功能，查看哪一项数据消耗时间过多</li>
<li>查看服务器硬件（网络、CPU、内存）负载情况</li>
<li>查看日志</li>
</ul>
</li>
<li><p>如何解决</p>
<blockquote>
<p>根据原因对症下药</p>
</blockquote>
<ul>
<li>加大带宽</li>
<li>数据库增加缓存层</li>
<li>优化 SQL 语句</li>
<li>申请 CDN 服务</li>
</ul>
</li>
<li><p>Linux 性能调优的方法</p>
<ul>
<li>Disabling daemons（关闭 daemons）</li>
<li>Shutting down the GUI（关闭 GUI）</li>
<li>Changing kernel parameters（改变内核参数）</li>
<li>Kernel parameters（内核参数）</li>
<li>Tuning the processor subsystem（处理器子系统调优）</li>
<li>Tuning the memory subsystem（内存子系统调优）</li>
<li>Tuning the fifile system（文件系统子系统调优）</li>
<li>Tuning the network subsystem（网络子系统调优）</li>
</ul>
</li>
</ol>
<h3 id="14-Linux-内核锁"><a href="#14-Linux-内核锁" class="headerlink" title="14.Linux 内核锁"></a>14.Linux 内核锁</h3><blockquote>
<p>Linux 的内核锁主要是自旋锁和信号量</p>
<p>Linux 同步机制：原子操作、信号量、自旋锁、大内核锁、读写锁。。。。。。</p>
</blockquote>
<ul>
<li><p>自旋锁</p>
<blockquote>
<p>最多只能被一个可执行线程持有，如果一个执行线程示图请求一个已被持有的自旋锁，则忙等</p>
<p><strong>自旋锁可以在任何时刻防止多余一个的执行线程进入临界区</strong></p>
<p><strong>不会进行上下文切换，适用于短时间加锁</strong></p>
</blockquote>
</li>
<li><p>信号量</p>
<blockquote>
<p>Linux 中的信号量是一种睡眠锁</p>
<p>如果有线程试图获取已被持有的信号量，则会被加入等待队列并进入睡眠状态</p>
<p>处理器执行其他代码直到等待队列中的线程被唤醒</p>
<p><strong>会进行上下文切换，适用于长时间加锁</strong></p>
<p><strong>当线程持有信号量时，不能再持有自旋锁</strong></p>
</blockquote>
</li>
</ul>
<h3 id="15-进程间通信"><a href="#15-进程间通信" class="headerlink" title="15.进程间通信"></a>15.进程间通信</h3><ol>
<li><p>管道（Pipe）</p>
<blockquote>
<p>用于具有亲缘关系进程间的通信，允许一个进程和另一个与它有共同祖先的进程之间进行通信</p>
</blockquote>
</li>
<li><p>命名管道（named pipe）</p>
<blockquote>
<p>命名管道克服了管道没有名字的限制</p>
<p>因此允许无亲缘关系进程间的通信</p>
<p>命名管道在文件系统中有对应的文件名</p>
<p>通过命令 <code>mkfifo</code> 创建</p>
</blockquote>
</li>
<li><p>信号（Signal）</p>
<blockquote>
<p>信号是比较复杂的通信方式，用于通知接收进程有事件发生</p>
<p>除了用于进程间通信外，还可以发送信号给进程本身</p>
</blockquote>
</li>
<li><p>消息（Message）</p>
<blockquote>
<p>消息队列是消息的链接表</p>
<p>有足够权限的进程可以向队列中添加消息，被赋予读取权限的进程可以读取队列中的消息</p>
<p>消息队列克服了信号承载信息量少、管道只能承载无格式字节流以及缓冲区大小受限等缺陷</p>
</blockquote>
</li>
<li><p>共享内存</p>
<blockquote>
<p>使得多个进程可以访问同一块内存空间，是最快的可用 IPC 形式</p>
<p>是针对其他通信机制效率低而设计的</p>
<p>往往与其他通信机制如信号量结合使用，实现进程间的同步互斥</p>
</blockquote>
</li>
<li><p>信号量（Semaphore）</p>
<blockquote>
<p><strong>主要作为进程间以及同一进程不同线程之间的同步手段</strong></p>
</blockquote>
</li>
<li><p>套接字（Socket）</p>
<blockquote>
<p>更为一般的进程间通信机制</p>
<p><strong>可用于不同机器之间的进程间通信</strong></p>
</blockquote>
</li>
</ol>
<h3 id="16-调用-schedule-进行进程切换的方式有几种"><a href="#16-调用-schedule-进行进程切换的方式有几种" class="headerlink" title="16.调用 schedule() 进行进程切换的方式有几种"></a>16.调用 schedule() 进行进程切换的方式有几种</h3><ul>
<li>系统调用 <code>do_fork()</code></li>
<li>定时中断 <code>do_timer()</code></li>
<li>唤醒进程 <code>wake_up_process</code></li>
<li>改变进程的调度策略 <code>setscheduler()</code></li>
<li>系统调用礼让 <code>sys_sched_yield()</code></li>
</ul>
<h3 id="17-Linux-软中断和工作队列的作用是什么"><a href="#17-Linux-软中断和工作队列的作用是什么" class="headerlink" title="17.Linux 软中断和工作队列的作用是什么"></a>17.Linux 软中断和工作队列的作用是什么</h3><blockquote>
<p>Linux 中的软中断和工作队列的作用是中断处理</p>
</blockquote>
<ul>
<li><p>软中断</p>
<blockquote>
<p>软中断一般是<code>可延迟函数</code>的总称</p>
<p>不能睡眠、不能阻塞、它处于中断上下文，不能进城切换</p>
<p>软中断不能被自己打断，只能被硬件中断打断(上半部)，可以并发的运行在多个 CPU 上</p>
<p>所以软中断必须设计成可重入的函数，因此也需要自旋锁来保护其数据结构</p>
</blockquote>
</li>
<li><p>工作队列</p>
<blockquote>
<p>工作队列中的函数处在进程上下文中</p>
<p>可以睡眠、也能被阻塞、能够在不同的进程间切换，以完成不同的工作</p>
<p><strong>可延迟函数和工作队列都不能访问用户的进程空间</strong>，可延时函数在执行时不可能有任何正在运行的进程</p>
<p><strong>工作队列的函数由内核进程执行，不能访问用户空间地址</strong></p>
</blockquote>
</li>
</ul>
<h3 id="其他细节"><a href="#其他细节" class="headerlink" title="其他细节"></a>其他细节</h3><ol>
<li><p>Linux 日志文件</p>
<blockquote>
<p>比较重要的是 <code>/var/log/messages</code> 日志文件</p>
</blockquote>
</li>
<li><p>Linux 系统安装多个桌面环境有帮助吗</p>
<blockquote>
<p>通常一个桌面环境（如 KDE 或 Gnome）足以在没有问题的情况下运行</p>
<p>尽管系统允许从一个环境切换到另一个环境，但这对用户来说都是优先考虑的问题</p>
<p>有些程序在一个环境中工作而在另一个环境中无法工作，因此它也可以被视为选择使用哪个环境的一个因素</p>
</blockquote>
</li>
<li><p>交换空间</p>
<blockquote>
<p>交换空间是 Linux 使用的一定空间，用于临时保存一些并发运行的程序</p>
<p>当 RAM 没有足够的内存来容纳正在执行的所有程序时，就会发生这种情况</p>
</blockquote>
</li>
<li><p>root 账户</p>
<blockquote>
<p>root 帐户就像一个系统管理员帐户，允许完全控制系统</p>
<p>可以在此处创建和维护用户帐户，为每个帐户分配不同的权限</p>
<p>每次安装 Linux 时都是默认帐户</p>
</blockquote>
</li>
<li><p>什么是 LILO</p>
<blockquote>
<p>LILO（Linux Loader）是 Linux 的引导加载程序</p>
<p>它主要用于将 Linux 操作系统加载到主内存中，以便它可以开始运行</p>
</blockquote>
</li>
<li><p>什么是 CLI</p>
<blockquote>
<p>CLI（command-line interface）命令行界面，也成为 CUI（字符用户界面）</p>
<p>是在图形用户界面普及前使用最为广泛的用户界面</p>
<p>通常不支持鼠标，用户通过键盘输入指令，计算机接收后执行</p>
</blockquote>
<ul>
<li>优点：节约计算机资源</li>
<li>缺点：使用较为不方便、直观</li>
</ul>
</li>
<li><p>什么是 GUI</p>
<blockquote>
<p>GUI（Graphical User Interface）图形用户接口</p>
<p>指采用图形方式显示计算机操作用户界面</p>
</blockquote>
<ul>
<li>优点：使用方便、直观</li>
<li>缺点：相较于 CLI 对计算机资源消耗较大</li>
</ul>
</li>
<li><p>开源的优势</p>
<blockquote>
<p>开源允许将软件（包括源代码）免费分发给任何感兴趣的人</p>
<p>人们可以添加功能，甚至可以调试和更正源代码中的错误</p>
<p>甚至可以让它运行得更好，然后再次自由地重新分配这些增强的源代码</p>
<p>这最终使社区中的每个人受益</p>
</blockquote>
</li>
<li><p>GNU 项目的重要性</p>
<blockquote>
<p>GNU 是 <code>GNU’s Not Unix</code> 的缩写</p>
<p>Linux 如此受欢迎在很大程度上还要归功于 GNU 工具，它们给 Linux 内核提供了环境</p>
<p>这种所谓的自由软件运动具有多种优势</p>
<p>例如可以自由地运行程序以及根据你的需要自由学习和修改程序</p>
<p>它还允许你将软件副本重新分发给其他人，以及自由改进软件并将其发布给公众</p>
</blockquote>
</li>
<li><p>RAID 是什么</p>
<blockquote>
<p>RAID（Redundant Array ofIndependent Disks） 独立磁盘冗余阵列</p>
<p>基本思想是把多个相对便宜的硬盘组合起来，成为一个硬盘阵列组，使性能达到甚至超过一个价格昂贵、容量巨大的硬盘</p>
<p>RAID 通常被用在服务器电脑上，使完全相同的硬盘组成一个逻辑扇区，因此操作系统只会把它当作一个硬盘</p>
<p><strong>RAID 分为不同的等级，不同的等级均在数据可靠性及读写性能上做了不同的权衡</strong></p>
</blockquote>
</li>
<li><p>shell 脚本是什么</p>
<blockquote>
<p>Shell 脚本是一个文本文件，包含一个或多个命令</p>
<p>作为系统管理员，经常需要使用多个命令来完成一项任务，可以添加这些所有命令在一个文本文件（Shell 脚本）来完成这些日常工作任务</p>
</blockquote>
</li>
<li><p>如何选择 Linux 操作系统版本</p>
<p><img src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Linux/%E7%89%88%E6%9C%AC%E9%80%89%E6%8B%A9.png" alt="版本选择"></p>
</li>
<li><p>如何规划一台 Linux 主机</p>
<ul>
<li>确定机器是做什么用的，比如是做 Web、DB 还是游戏服务器</li>
<li>确定系统需要如何安装，默认安装那些系统，如何分区</li>
<li>需要优化系统的哪些参数、需要创建哪些用户等等</li>
</ul>
</li>
<li><p><a target="_blank" rel="noopener" href="https://www.runoob.com/linux/linux-command-manual.html">Linux 基本命令</a></p>
</li>
<li><p>申请大块内存</p>
<blockquote>
<p>在 Linux 内核环境下，申请大块内存的成功率随着系统运行时间的增加而减少</p>
<p>可以通过 vmalloc 系列调用申请物理不连续但虚拟地址连续的内存，但是使用效率不高</p>
<p>一般建议在系统启动阶段申请大块内存</p>
</blockquote>
</li>
<li><p>通过伙伴系统申请内核内存的函数有哪些</p>
<blockquote>
<p>在物理页面管理上实现了基于区的伙伴系统（zone based buddy system）</p>
<p>对不同区的内存使用单独的伙伴系统（buddy system）管理，而且独立地监控空闲页</p>
<p>相应接口 <code>alloc_pages(gfp_mask, order),_ _get_free_pages(gfp_mask, order)</code> 等</p>
</blockquote>
</li>
<li><p>Linux 虚拟文件系统的关键数据结构有哪些</p>
<blockquote>
<p><code>struct super_block</code></p>
<p><code>struct inode</code></p>
<p><code>struct file</code></p>
<p><code>struct dentry</code></p>
</blockquote>
</li>
<li><p>进程调度的核心数据结构是哪个</p>
<blockquote>
<p>struct runqueue</p>
</blockquote>
</li>
<li><p>对文件或设备的操作函数保存在那个数据结构中</p>
<blockquote>
<p>struct file_operations</p>
</blockquote>
</li>
<li><p>字符设备驱动程序的关键数据结构是哪个</p>
<blockquote>
<p>字符设备描述符 <code>struct cdev、cdev_alloc()</code> 用于动态的分配 cdev 描述符</p>
<p><code>cdev_add()</code> 用于注册一个 cdev 描述符</p>
<p>cdev 包含一个 <code>struct kobject</code> 类型的数据结构，它是核心的数据结构</p>
</blockquote>
</li>
<li><p>Linux 中的文件包括哪些</p>
<blockquote>
<p>执行文件、普通文件、目录文件、链接文件、设备文件、管道文件</p>
</blockquote>
</li>
<li><p>创建进程的系统调用有那些</p>
<blockquote>
<p>clone()、fork()、vfork()</p>
<p>系统调用服务例程：sys_clone、sys_fork、sys_vfork</p>
</blockquote>
</li>
<li><p>Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的</p>
<blockquote>
<p><strong>Liunx 调度程序是根据根据进程的动态优先级来调度进程的</strong></p>
<p>但是动态优先级又是根据静态优先级根据算法计算出来的</p>
<p>两者是两个相关联的值</p>
<p><strong>因为高优先级的进程总是比低优先级的进程先被调度，为防止多个高优先级的进程占用 CPU 资源，导致其他进程不能占有 CPU，所以引入动态优先级概念</strong></p>
</blockquote>
</li>
<li><p>如何加载、卸载一个模块</p>
<blockquote>
<p>insmod 加载</p>
<p>rmmod 卸载</p>
</blockquote>
</li>
<li><p>模块和应用程序分别运行在什么空间</p>
<blockquote>
<p>模块运行在内核空间</p>
<p>应用程序运行在用户空间</p>
</blockquote>
</li>
<li><p>Linux 中的浮点运算由应用程序实现还是内核实现</p>
<blockquote>
<p>应用程序实现</p>
<p>Linux 中的浮点运算是利用数学库函数实现的，库函数能够被应用程序链接后调用，不能被内核链接调用，这些运算是在应用程序中运行的，然后再把结果反馈给系统</p>
<p>Linux 内核如果一定要进行浮点运算，需要在建立内核时选上 math-emu，使用软件模拟计算浮点运算，据说这样做的代价有：用户在安装驱动时需要重建内核，可能会影响到其他的应用程序，使得这些应用程序在做浮点运算的时候也使用 math-emu，大大的降低了效率</p>
</blockquote>
</li>
<li><p>模块程序能否使用可链接的库函数</p>
<blockquote>
<p>模块程序运行在内核空间，不能链接库函数</p>
</blockquote>
</li>
<li><p>TLB 中缓存的是什么内容</p>
<blockquote>
<p>TLB 页表缓存</p>
<p>当线性地址被第一次转换成物理地址的时候，将线性地址和物理地址的对应放到 TLB 中，用于下次访问这个线性地址时，加快转换速度</p>
</blockquote>
</li>
<li><p>Linux 中有哪几种设备</p>
<blockquote>
<p>字符设备和块设备</p>
<p>网卡是例外，不直接与设备文件对应</p>
<p>mknod 系统调用用来创建设备文件</p>
</blockquote>
</li>
<li><p>设备驱动程序包括哪些功能函数</p>
<blockquote>
<p>open()、read()、write()、llseek()、realse()</p>
</blockquote>
</li>
<li><p>如何唯一标识一个设备</p>
<blockquote>
<p>Linux 使用一个设备编号来唯一的标示一个设备</p>
<p>设备编号分为：主设备号和次设备号</p>
<p>一般主设备号标示设备对应的驱动程序，次设备号对应设备文件指向的设备</p>
<p>在内核中使用 dev_t 来表示设备编号，一般它是 32 位长度，其中 12 位用于表示主设备号，20 位用于表示次设备号，利用 <code>MKDEV(int major,int minor)</code> 用于生成一个 dev_t 类型的对象</p>
</blockquote>
</li>
<li><p>Linux 通过什么方式实现系统调用</p>
<blockquote>
<p><strong>靠软件中断实现的</strong></p>
<p>首先用户程序为系统调用设置参数，其中一个编号是系统调用编号，参数设置完成后</p>
<p>程序执行系统调用指令，x86 上的软中断是有 int 产生的，这个指令会导致一个异常，产生一个事件</p>
<p>这个事件会导致处理器跳转到内核态并跳转到一个新的地址</p>
<p>并开始处理那里的异常处理程序</p>
<p>此时的异常处理就是系统调用程序</p>
</blockquote>
</li>
</ol>
</article><div class="post-copyright"><div class="post-copyright__author"><span class="post-copyright-meta">文章作者: </span><span class="post-copyright-info"><a href="https://gitee.com/zcmmmm/zcmmmm">zcm</a></span></div><div class="post-copyright__type"><span class="post-copyright-meta">文章链接: </span><span class="post-copyright-info"><a href="https://gitee.com/zcmmmm/zcmmmm/2022/10/22/Linux%E9%9D%A2%E7%BB%8F/">https://gitee.com/zcmmmm/zcmmmm/2022/10/22/Linux%E9%9D%A2%E7%BB%8F/</a></span></div><div class="post-copyright__notice"><span class="post-copyright-meta">版权声明: </span><span class="post-copyright-info">本博客所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a> 许可协议。转载请注明来自 <a href="https://gitee.com/zcmmmm/zcmmmm" target="_blank">无人深空</a>！</span></div></div><div class="tag_share"><div class="post-meta__tag-list"><a class="post-meta__tags" href="/tags/Linux/">Linux</a></div><div class="post_share"><div class="social-share" data-image="https://study-record-images.oss-cn-beijing.aliyuncs.com/Linux/Linux.png" data-sites="facebook,twitter,wechat,weibo,qq"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/butterfly-extsrc/sharejs/dist/css/share.min.css" media="print" onload="this.media='all'"><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/sharejs/dist/js/social-share.min.js" defer></script></div></div><nav class="pagination-post" id="pagination"><div class="prev-post pull-left"><a href="/2022/10/23/Spring%E9%9D%A2%E7%BB%8F/"><img class="prev-cover" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Java/Spring/Spring.jpg" onerror="onerror=null;src='/img/404.jpg'" alt="cover of previous post"><div class="pagination-info"><div class="label">上一篇</div><div class="prev_info">Spring面经</div></div></a></div><div class="next-post pull-right"><a href="/2022/10/18/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E9%9D%A2%E7%BB%8F/"><img class="next-cover" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Computer%20Network.png" onerror="onerror=null;src='/img/404.jpg'" alt="cover of next post"><div class="pagination-info"><div class="label">下一篇</div><div class="next_info">计算机网络面经</div></div></a></div></nav><div class="relatedPosts"><div class="headline"><i class="fas fa-thumbs-up fa-fw"></i><span>相关推荐</span></div><div class="relatedPosts-list"><div><a href="/2022/11/13/Linux%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/" title="Linux基础知识"><img class="cover" src="https://study-record-images.oss-cn-beijing.aliyuncs.com/Linux/Linux.png" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2022-11-13</div><div class="title">Linux基础知识</div></div></a></div></div></div></div><div class="aside-content" id="aside-content"><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>目录</span><span class="toc-percentage"></span></div><div class="toc-content is-expand"><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#Linux-%E9%9D%A2%E7%BB%8F"><span class="toc-text">Linux 面经</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1-Linux-%E4%BB%8B%E7%BB%8D"><span class="toc-text">1.Linux 介绍</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-Linux-%E5%86%85%E6%A0%B8%E4%B8%8E%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84"><span class="toc-text">2.Linux 内核与体系结构</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-Bash-%E5%92%8C-DOS-%E7%9A%84%E5%8C%BA%E5%88%AB"><span class="toc-text">3.Bash 和 DOS 的区别</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4-Linux-%E5%BC%80%E6%9C%BA%E5%90%AF%E5%8A%A8%E8%BF%87%E7%A8%8B"><span class="toc-text">4.Linux 开机启动过程</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5-Linux-%E7%B3%BB%E7%BB%9F%E7%BC%BA%E7%9C%81%E7%9A%84%E8%BF%90%E8%A1%8C%E7%BA%A7%E5%88%AB"><span class="toc-text">5.Linux 系统缺省的运行级别</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#6-Linux-%E4%BD%BF%E7%94%A8%E7%9A%84%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1%E6%96%B9%E5%BC%8F"><span class="toc-text">6.Linux 使用的进程间通信方式</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7-Linux-%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F"><span class="toc-text">7.Linux 文件系统</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#8-inode-%E4%BB%8B%E7%BB%8D"><span class="toc-text">8.inode 介绍</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#9-%E7%A1%AC%E9%93%BE%E6%8E%A5-VS-%E8%BD%AF%E8%BF%9E%E6%8E%A5"><span class="toc-text">9.硬链接 VS 软连接</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#10-Linux-%E7%B3%BB%E7%BB%9F%E5%88%9D%E5%A7%8B%E5%8C%96%E7%8E%AF%E5%A2%83%E5%90%8E%E9%9C%80%E8%A6%81%E5%81%9A%E4%B8%80%E4%BA%9B%E4%BB%80%E4%B9%88%E5%AE%89%E5%85%A8%E5%B7%A5%E4%BD%9C"><span class="toc-text">10.Linux 系统初始化环境后需要做一些什么安全工作</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#11-CC-%E6%94%BB%E5%87%BB-VS-DDOS-%E6%94%BB%E5%87%BB"><span class="toc-text">11.CC 攻击 VS DDOS 攻击</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#12-%E7%BD%91%E7%AB%99%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B3%A8%E5%85%A5"><span class="toc-text">12.网站数据库注入</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#13-%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E7%BD%91%E7%AB%99%E8%AE%BF%E9%97%AE%E6%85%A2%E9%97%AE%E9%A2%98"><span class="toc-text">13.如何处理网站访问慢问题</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#14-Linux-%E5%86%85%E6%A0%B8%E9%94%81"><span class="toc-text">14.Linux 内核锁</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#15-%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1"><span class="toc-text">15.进程间通信</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#16-%E8%B0%83%E7%94%A8-schedule-%E8%BF%9B%E8%A1%8C%E8%BF%9B%E7%A8%8B%E5%88%87%E6%8D%A2%E7%9A%84%E6%96%B9%E5%BC%8F%E6%9C%89%E5%87%A0%E7%A7%8D"><span class="toc-text">16.调用 schedule() 进行进程切换的方式有几种</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#17-Linux-%E8%BD%AF%E4%B8%AD%E6%96%AD%E5%92%8C%E5%B7%A5%E4%BD%9C%E9%98%9F%E5%88%97%E7%9A%84%E4%BD%9C%E7%94%A8%E6%98%AF%E4%BB%80%E4%B9%88"><span class="toc-text">17.Linux 软中断和工作队列的作用是什么</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%85%B6%E4%BB%96%E7%BB%86%E8%8A%82"><span class="toc-text">其他细节</span></a></li></ol></li></ol></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">&copy;2022 - 2023 By zcm</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="阅读模式"><i class="fas fa-book-open"></i></button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button class="close" id="mobile-toc-button" type="button" title="目录"><i class="fas fa-list-ul"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">搜索</span><span id="loading-status"></span><button class="search-close-button"><i class="fas fa-times"></i></button></nav><div class="is-center" id="loading-database"><i class="fas fa-spinner fa-pulse"></i><span>  数据库加载中</span></div><div class="search-wrap"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div><hr/><div id="local-search-results"></div></div></div><div id="search-mask"></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.min.js"></script><script src="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.js"></script><script src="/js/search/local-search.js"></script><div class="js-pjax"></div><script src="/js/categories.js?v1"></script><script src="/js/navigation.js?v1"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>